package br.edu.catolica.sadbc.manager;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityQuery;

import br.edu.catolica.sadbc.core.manager.AbstractCrudManager;
import br.edu.catolica.sadbc.entity.Atividade;
import br.edu.catolica.sadbc.entity.filter.AtividadeSearchFilter;

@AutoCreate
@Name(value = "atividadeManager")
public class AtividadeManager extends AbstractCrudManager<Atividade> {
	
	private static final String ejbql = "select o from Atividade o";
	@SuppressWarnings("unused")
	private static final String operator = "or";
	private String[] restriction = {
			" o.tipoAtividade.id = #{atividadeSearchFilter.tipoAtividade.id}) ",
			" lower(o.nome) like concat(lower(#{atividadeSearchFilter.nome}), '%') ",
			" lower(o.descricao) like concat(lower(#{atividadeSearchFilter.descricao}), '%') "};
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public List<Atividade> buscarAtividade(AtividadeSearchFilter atividadeSearchFilter) {
		List<Atividade> lista = new ArrayList<Atividade>();
		EntityQuery entityQuery = new EntityQuery();
		entityQuery.setEjbql(ejbql);
		entityQuery.setRestrictionExpressionStrings(Arrays.asList(restriction));
//		entityQuery.setRestrictionLogicOperator(operator);
		lista = entityQuery.getResultList();
		log.info("Lista vazia: " + lista.isEmpty());
		log.info("Tamanho da lista: " + lista.size());
		return lista;
	}
	

}
